home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #115 (1991-03)(Amiga User Group Deutschland e.V.).zip / Franz PD Disk #115 (1991-03)(Amiga User Group Deutschland e.V.).adf / MaxiDAT_V2.50 / MD250 (.txt) < prev   
AmigaBASIC Source Code  |  1989-07-03  |  28KB  |  1,346 lines

  1. CLEAR ,80000
  2.  
  3. Version$="Ver. 2.50, 20.09.1990"
  4.  
  5. WINDOW CLOSE 1
  6.  
  7. DECLARE FUNCTION AutoRequest%  LIBRARY
  8. DECLARE FUNCTION AllocMem&     LIBRARY
  9.  
  10. SCREEN 1,640,255,2,2
  11.  
  12. WINDOW 2,"MaxiDAT "+Version$,,23,1
  13. PALETTE 0,0,0,0 : PALETTE 1,0,0,0 : PALETTE 3,0,0,0
  14.  
  15. FOR i%=1 TO 10
  16.   MENU i%,0,0,""
  17. NEXT i%
  18.  
  19. FOR i=0 TO 1 STEP 0.01
  20.   PALETTE 1,i,i,i
  21.   PALETTE 2,i,i,i
  22.   PALETTE 3,i,i,i
  23. NEXT i
  24.  
  25. WIDTH 78
  26.  
  27. ON BREAK GOSUB Unterbrechung
  28. BREAK ON
  29. ON ERROR GOTO Fehler
  30.  
  31. LINE INPUT "Ist ein Drucker angeschlossen ([J]a/[N]ein) ? ",D$
  32. CLS                                           
  33. COLOR 3
  34. PRINT "Einen Moment bitte! Ich lese die .bmap-Files ..."
  35. IF LEFT$(UCASE$(D$),1)="J" THEN
  36.   Drucker=1
  37. END IF
  38.  
  39. MENU 1,0,1,"Projekt  "
  40.   MENU 1,1,1,"Datei anlegen       "
  41.   MENU 1,2,1,"Daten eingeben      "
  42.   MENU 1,3,1,"Datei benutzen      "
  43.   MENU 1,4,1,"Neustart            "
  44.   MENU 1,5,0,"--------------------"
  45.   MENU 1,6,1,"E N D E             "
  46.  
  47. MENU 2,0,Drucker,"Drucker  "
  48.   MENU 2,1,1,"Drucke alle Daten mit Kopf    "
  49.   MENU 2,2,1,"Drucke alle Daten ohne Kopf   "
  50.   MENU 2,3,1,"Nur bestimmte Daten drucken   "
  51.  
  52. MENU 3,0,1,"Diskette  "
  53.   MENU 3,1,1,"Aktuelles Unterverzeichnis    "
  54.   MENU 3,2,1,"Aktuelles Laufwerk            "
  55.   MENU 3,3,1,"Zeige Directory               "
  56.   MENU 3,4,1,"File löschen (ACHTUNG!)       "
  57.  
  58. MENU 4,0,1,"Grafik  "
  59.   MENU 4,1,1,"Grafikdatei erstellen    "
  60.   MENU 4,2,1,"Grafik zeichnen          "
  61.  
  62. MENU 5,0,1,"Infos  "
  63.   MENU 5,1,1,"Programminformationen     "
  64.  
  65. MENU 6,0,1,"Fenster  "
  66.   MENU 6,1,1,"Aufräumen      "
  67.   
  68. FOR i=1 TO 0 STEP -0.01
  69.   PALETTE 1,i,i,i:PALETTE 2,i,i,i
  70. NEXT i
  71.  
  72. LIBRARY "exec.library"
  73. LIBRARY "graphics.library"
  74. LIBRARY "intuition.library"
  75.  
  76. IF Drucker=1 THEN
  77.   LOCATE 5,5
  78.   PRINT "Bitte den Drucker einschalten !"
  79.   LPRINT
  80.   LOCATE 5,5
  81.   PRINT "Der Drucker ist initialisiert !"
  82. END IF
  83.  
  84. OPEN "mConfig" FOR INPUT AS #1
  85.   INPUT #1,x$
  86.   INPUT #1,Drive$
  87.   INPUT #1,Pfad$
  88.   INPUT #1,d1$
  89.   INPUT #1,d2$
  90.   FOR i=0 TO 3
  91.     INPUT #1,r,g,b
  92.     c(i,0)=r:c(i,1)=g:c(i,2)=b
  93.   NEXT i
  94. CLOSE #1
  95.  
  96. DIM Laenge(11),Bezeichnung$(11),In$(11),Ein$(11)
  97.  
  98. RastPort&=WINDOW(8)
  99. GOSUB MenueVervollstaendigen
  100. GOSUB FadeIn
  101.  
  102. Hauptprogramm:
  103.              
  104. ON MENU GOSUB Men
  105. MENU ON
  106.  
  107. ON TIMER(1) GOSUB Zeit
  108.  
  109. Hauptschleife:
  110.   WINDOW CLOSE 1
  111.   MENU ON
  112.   CLS
  113.   WT$="MaxiDAT "+Version$+CHR$(0)
  114.   ST$="MaxiDAT - Screen"+CHR$(0)
  115.   CALL SetWindowTitles(WINDOW(7),SADD(WT$),SADD(ST$))
  116.   TIMER ON
  117.   COLOR 1
  118.   LOCATE 1,1
  119.   txt$="        M a x i D A T" 
  120.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  121.   LOCATE 2,1
  122.   txt$="   -----------------------"
  123.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  124.   LOCATE 4,1
  125.   txt$=" Version : "+Version$
  126.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  127.   GOSUB Datum
  128.   LOCATE 6,1
  129.   txt$="  Datum          : "+DTM$
  130.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  131.   SchreibeZeit:
  132.   LOCATE 7,1
  133.   txt$="  Zeit           : "+TIME$
  134.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  135.   txt$="  Freier Speicher:"+STR$(FRE(-1))+" Bytes"
  136.   LOCATE 8,1
  137.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  138.   IF FI=1 THEN FI=0:TIMER OFF:MENU OFF:GOSUB FadeIn:MENU ON:TIMER ON
  139.   SLEEP
  140.   SLEEP
  141.   dummy$=INKEY$ : dummy$=INKEY$ : dummy$=INKEY$
  142. GOTO Hauptschleife
  143.                                                                  
  144. Zeit:
  145. RETURN SchreibeZeit
  146.  
  147. Men:
  148.   TIMER OFF
  149.   TITEL=MENU(0)
  150.   PUNKT=MENU(1)
  151.   MenuStrip&=PEEKL(WINDOW(7)+28)
  152.   CALL ClearMenuStrip(WINDOW(7))
  153.   IF TITEL=1 THEN
  154.     IF PUNKT=1 THEN
  155.       GOSUB FadeOut
  156.       GOSUB Einrichten
  157.       FI=1
  158.     ELSEIF PUNKT=2 THEN
  159.       GOSUB Eingabe
  160.       FI=1
  161.     ELSEIF PUNKT=3 THEN
  162.       GOSUB Benutzen
  163.       CLS
  164.       FI=1
  165.     ELSEIF PUNKT=4 THEN
  166.       GOSUB Loeschen
  167.     ELSEIF PUNKT=6 THEN
  168.       GOSUB Ende
  169.     END IF
  170.   ELSEIF TITEL=2 THEN
  171.     ON PUNKT GOSUB DruckeAlles,DruckeAllesOHNE,DruckeAuswahl
  172.   ELSEIF TITEL=3 THEN
  173.     ON PUNKT GOSUB ChangeDir,ChangeDrive,ZeigeDir,DeleteFile
  174.   ELSEIF TITEL=4 THEN
  175.     IF PUNKT=1 THEN
  176.       GOSUB GrafikDateiAnlegen
  177.     ELSEIF PUNKT=2 THEN
  178.       FI=1
  179.       GOSUB Zeichnen
  180.     END IF
  181.   ELSEIF TITEL=5 THEN
  182.     GOSUB FadeOut
  183.     GOSUB ProgrammInfo
  184.     FI=1
  185.   ELSEIF TITEL=6 THEN
  186.     GOSUB Aufraeumen
  187.   END IF
  188.   CALL SetMenuStrip(WINDOW(7),MenuStrip&)
  189. RETURN
  190.  
  191. Einrichten:
  192.   w.t$="MaxiDAT.   NEUE DATEI DEFINIEREN"+CHR$(0)
  193.   GOSUB FensterNeuRichten
  194.   GOSUB LoescheVariablen
  195.   LINE (0,0)-(640,255),0,bf:CLS
  196.   COLOR 1,2:PRINT "BEZEICHNUNG EINGEBEN.       * = Ende      "
  197.   GOSUB FadeIn
  198.   WHILE Jn$<>"J"
  199.     Gesamtlaenge = 0
  200.     MENU OFF
  201.     PRINT :PRINT 
  202.     FOR i=1 TO 11
  203.       LOCATE i+2,1
  204.       COLOR 1,2
  205.       PRINT USING "##";i
  206.       LOCATE 1,1
  207.       PRINT "BEZEICHNUNG EINGEBEN.       * = Ende      "
  208.       COLOR 1,0
  209.       LOCATE i+2,4
  210.       IF i<>11 THEN
  211.         PRINT Bezeichnung$(i);
  212.         LOCATE i+2,4
  213.         LINE INPUT NeueBezeichnung$
  214.         NeueBezeichnung$=LEFT$(NeueBezeichnung$,40)
  215.         IF NeueBezeichnung$<>"" THEN
  216.           Bezeichnung$(i)=NeueBezeichnung$
  217.         END IF
  218.         BeLaenge=LEN(Bezeichnung$(i))
  219.         IF BeLaenge>Maxbezlaenge THEN
  220.           Maxbezlaenge=BeLaenge
  221.         END IF
  222.         LOCATE i+2,4
  223.         PRINT Bezeichnung$(i)
  224.         PRINT STRING$(20," ")
  225.         COLOR 1,2
  226.         LOCATE 1,1
  227.         PRINT "BITTE DIE FELDLÄNGE EINGEBEN!             "  
  228.         COLOR 1,0
  229.         LOCATE i+2,42
  230.         PRINT Laenge(i)
  231.         LOCATE i+2,42
  232.         LINE INPUT Laenge$
  233.       ELSE
  234.         Bezeichnung$(i)="*"
  235.         Laenge$="1"
  236.         Fertig=1
  237.       END IF
  238.       NeueLaenge=INT(VAL(Laenge$))
  239.       IF NeueLaenge<>0 THEN
  240.         Laenge(i)=NeueLaenge
  241.       END IF  
  242.       Fertig=0
  243.       IF Bezeichnung$(i)="*" THEN
  244.         Anzmsk=i
  245.         Fertig=1
  246.       END IF
  247.       IF Laenge(i)<=0 OR Laenge(i)>50 THEN
  248.         Laenge(i)=45
  249.       END IF
  250.       LOCATE i+2,42:PRINT "        ":LOCATE i+2,42:PRINT Laenge(i)
  251.       IF Fertig THEN
  252.         i=16
  253.       END IF
  254.     NEXT i
  255.     CLS
  256.     FOR i=1 TO 11
  257.       LOCATE i+2,1
  258.       COLOR 1,2
  259.       PRINT USING "##";i;
  260.       COLOR 1,0
  261.       LOCATE i+2,4
  262.       txt$=Bezeichnung$(i)
  263.       CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  264.       LOCATE i+2,42
  265.       txt$=STR$(Laenge(i))
  266.       CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  267.     NEXT i
  268.     Anzmsk=Anzmsk-1
  269.     Jn$=""
  270.     LOCATE 1,1
  271.     PRINT "Sind diese Eingaben richtig  ([J]a oder [N]ein) ?";
  272.     LINE INPUT "";Jn$
  273.     Jn$=LEFT$(UCASE$(Jn$),1)
  274.     CLS
  275.   WEND
  276.   Jn$=""                            ' fuer naechsten Aufruf loeschen
  277.   CLS
  278.   LOCATE 1,1
  279.   PRINT "Bitte den Dateinamen eingeben :"
  280.   LINE INPUT Datinfnam$
  281.   GOSUB FadeOut
  282.   IF Datinfnam$<>"" THEN
  283.     Datinfnam$="Daten/"+Datinfnam$+".INFOS"
  284.     OPEN Datinfnam$ FOR OUTPUT AS #2
  285.       WRITE #2,Maxbezlaenge
  286.       WRITE #2,Anzmsk
  287.       WRITE #2,1                        ' Satznummer
  288.       FOR i=1 TO Anzmsk
  289.         WRITE #2,Bezeichnung$(i)
  290.         WRITE #2,Laenge(i)
  291.       NEXT i
  292.     CLOSE #2          
  293.   END IF
  294.   GOSUB FensterWieVorher
  295. RETURN             
  296.  
  297. Eingabe:
  298.   w.t$="MaxiDAT.    Dateneingabe"+CHR$(0)
  299.   GOSUB FensterNeuRichten
  300.   GOSUB LoescheVariablen
  301.   LINE (0,0)-(640,255),0,bf:CLS
  302.   LINE INPUT "Filename ? ";Datnam$
  303.   GOSUB FadeOut
  304.   IF Datnam$="" THEN
  305.     GOSUB FensterWieVorher:RETURN
  306.   END IF
  307.   Datinfnam$=Drive$+Pfad$+Datnam$+".INFOS"
  308.   Datnam$=Drive$+Pfad$+Datnam$+".DATEN"
  309.   GOSUB LeseInfos
  310.   Satz=Satznummer
  311.   OPEN "r",#1,Datnam$,550
  312.     FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11)
  313.     CLS : PRINT "Daten eingeben."
  314.     GOSUB FadeIn
  315.     WHILE Jn2$<>"N"
  316.       GOSUB Eing
  317.       FOR i=1 TO 11
  318.         LSET In$(i)=Ein$(i)
  319.         Ein$(i)=""
  320.       NEXT i
  321.       PUT #1,Satz
  322.       Satz=Satz+1
  323.       LOCATE 20,1
  324.       Jn2$=""
  325.       INPUT "Weitere Datensätze eingeben ? (J/N) ";Jn2$
  326.       Jn2$=LEFT$(UCASE$(Jn2$),1)
  327.     WEND
  328.     GOSUB FadeOut
  329.     Jn2$=""
  330.   CLOSE #1
  331.   OPEN Datinfnam$ FOR OUTPUT AS #2
  332.     WRITE #2,Maxbezlaenge
  333.     WRITE #2,Anzmsk
  334.     WRITE #2,Satz
  335.     FOR i=1 TO Anzmsk
  336.       WRITE #2,Bezeichnung$(i)
  337.       WRITE #2,Laenge(i)
  338.     NEXT i
  339.   CLOSE #2  
  340.   GOSUB FensterWieVorher
  341. RETURN
  342.  
  343. Benutzen:
  344.   w.t$="MaxiDAT.    Datei benutzen"+CHR$(0)
  345.   GOSUB FensterNeuRichten
  346.   GOSUB LoescheVariablen
  347.   LINE (0,0)-(640,255),0,bf:CLS
  348.   LINE INPUT "Filename ? ";Datnam$
  349.   GOSUB FadeOut
  350.   IF Datnam$="" THEN
  351.     GOSUB FensterWieVorher:RETURN
  352.   END IF
  353.   RastPort&=WINDOW(8)
  354.   Datinfnam$=Drive$+Pfad$+Datnam$+".INFOS"
  355.   Datnam$=Drive$+Pfad$+Datnam$+".DATEN"
  356.   GOSUB LeseInfos
  357.   Msatz=Satznummer-1
  358.   IF Msatz=0 THEN
  359.     GOSUB FadeIn
  360.     PRINT "Diese Datei enthält keine Daten."
  361.     BEEP
  362.     PRINT "Taste drücken !"
  363.     WHILE INKEY$="":WEND
  364.     GOSUB FadeOut:GOSUB FensterWieVorher
  365.     RETURN
  366.   END IF
  367.   OPEN "r",#1,Datnam$,550
  368.     FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11)
  369.     Satz=1
  370.     CLS
  371.     Co$=""
  372.     txt$="File : "+Datnam$+"          Datensatz # "+STR$(Satz)
  373.     LOCATE 1,1
  374.     CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  375.     txt$="***---------------------===MaxiDAT - Befehle===-------------------------***"
  376.     LOCATE 2,1
  377.     CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  378.     txt$="<+> : Nächster Datensatz    <->    : Letzter Satz      <G> : Gehe zu #  "
  379.     LOCATE 3,1
  380.     CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  381.     txt$="<S> : Suchen                <HELP> : Infos zeigen      <E> : Editieren  "
  382.     LOCATE 4,1
  383.     CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  384.     txt$="<D> : Datensatz löschen     <P>    : Satz ausdrucken   <Q> : Fertig     "
  385.     LOCATE 5,1
  386.     CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  387.     txt$="***---------------------=======================--------------------------***"
  388.     LOCATE 6,1
  389.     CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  390.     GOSUB FadeIn
  391.     WHILE Co$<>"Q"
  392.       CLS
  393.       Co$=""
  394.       txt$="File : "+Datnam$+"          Datensatz # "+STR$(Satz)
  395.       LOCATE 1,1
  396.       CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  397.       txt$="***---------------------===MaxiDAT - Befehle===-------------------------***"
  398.       LOCATE 2,1
  399.       CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  400.       txt$="<+> : Nächster Datensatz    <->    : Letzter Satz      <G> : Gehe zu #  "
  401.       LOCATE 3,1
  402.       CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  403.       txt$="<S> : Suchen                <HELP> : Infos zeigen      <E> : Editieren  "
  404.       LOCATE 4,1
  405.       CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  406.       txt$="<D> : Datensatz löschen     <P>    : Satz ausdrucken   <Q> : Fertig     "
  407.       LOCATE 5,1
  408.       CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  409.       txt$="***---------------------=======================--------------------------***"
  410.       LOCATE 6,1
  411.       CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  412.       PRINT 
  413.       GET #1,Satz
  414.       FOR i=1 TO Anzmsk
  415.         COLOR 3
  416.         txt$=Bezeichnung$(i)+":"
  417.         LOCATE i+7,1
  418.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  419.         COLOR 2
  420.         LOCATE i+7,Maxbezlaenge+4
  421.         txt$=In$(i)
  422.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  423.       NEXT i
  424.       COLOR 1
  425.       WHILE Co$<>"+" AND Co$<>"-" AND Co$<>"G" AND Co$<>"S" AND Co$<>"R" AND Co$<>"D" AND Co$<>"E" AND Co$<>"P" AND Co$<>"Q" AND Co$<>CHR$(139) AND Co$<>CHR$(31) AND Co$<>CHR$(30)
  426.         Co$=UCASE$(INKEY$)
  427.       WEND
  428.       IF Co$=CHR$(139) THEN
  429.         REM 139 ist der ASCII-Code der HELP-Taste
  430.         GOSUB FadeOut
  431.         WINDOW 5,"MaxiDAT.  Befehle beim Benutzen der Datei ... :",,31,1
  432.         RastPort&=WINDOW(8)
  433.         LINE (0,0)-(640,255),0,bf:CLS
  434.         WINDOW 5:CALL ActivateWindow(WINDOW(7))
  435.         txt$="Erklärungen zu den Befehlen :"
  436.         LOCATE 1,1
  437.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  438.         txt$="============================="
  439.         LOCATE 2,1
  440.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  441.         txt$="<+>   -   Zeige den numerisch nächsten Datensatz"
  442.         LOCATE 4,1
  443.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  444.         txt$="<->   -   Zeige den numerisch letzten Datensatz"
  445.         LOCATE 5,1
  446.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  447.         txt$="<G>   -   Springe zu einem bestimmten Satz"
  448.         LOCATE 6,1
  449.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  450.         txt$="<S>   -   Suche nach Daten (beginnend vom aktuellen Satz."
  451.         LOCATE 7,1
  452.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  453.         txt$="          Arbeitet auf Wunsch 'case-sensitive'.)"
  454.         LOCATE 8,1
  455.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  456.         txt$="<E>   -   Aktuellen Datensatz verändern."
  457.         LOCATE 9,1
  458.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  459.         txt$="<D>   -   Aktuellen Datensatz löschen."
  460.         LOCATE 10,1
  461.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  462.         txt$="<P>   -   Aktuellen Datensatz ausdrucken."
  463.         LOCATE 11,1
  464.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  465.         txt$="<Q>   -   Zurück zum Hauptmenü."
  466.         LOCATE 12,1
  467.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  468.         txt$="<-    -   10 Sätze zurück."
  469.         LOCATE 13,1
  470.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  471.         txt$="->    -   10 Sätze vorwärts"
  472.         LOCATE 14,1
  473.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  474.         txt$="<HELP>-   Diese Seite zeigen."
  475.         LOCATE 15,1
  476.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  477.         txt$="Sie können dieses Window jetzt schon schließen, es kann"
  478.         LOCATE 17,1
  479.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  480.         txt$="aber auch geöffnet bleiben, während Sie weiterarbeiten."
  481.         LOCATE 18,1
  482.         CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  483.         GOSUB FadeIn
  484.         CALL SizeWindow(WINDOW(7),620-PEEKW(WINDOW(7)+8),180-PEEKW(WINDOW(7)+10))
  485.         CALL MoveWindow(WINDOW(7),10-PEEKW(WINDOW(7)+4),30-PEEKW(WINDOW(7)+6))
  486.         CALL ClearMenuStrip(WINDOW(7))
  487.         w&=WINDOW(7)
  488.         WINDOW 2 : CALL ActivateWindow(WINDOW(7)) : RastPort&=WINDOW(8)
  489.         CALL SetWindowTitles(WINDOW(7),SADD(w.t$),-1)
  490.         CALL WindowToFront(w&)
  491.       END IF
  492.       IF Co$="S" THEN
  493.         WINDOW 9,"Daten suchen ...",(100,170)-(540,230),16,1
  494.         LOCATE 2,2
  495.         PRINT "In welchem Feld # ?";
  496.         LOCATE 3,2
  497.         PRINT "Nach welchem Begriff ? ";
  498.         LOCATE 4,2
  499.         PRINT "Case-sensitive  [J/N] ?";
  500.         LOCATE 5,2
  501.         PRINT "Vorwärts, rückwärts, gesamtes File oder aufhören ?";
  502.         LOCATE 6,2
  503.         PRINT "(V/R/G/Q) ?";
  504.         Sfeld:
  505.           LOCATE 2,22:LINE INPUT Sfeld$:Sfeld=ABS(INT(VAL(Sfeld$)))
  506.         IF Sfeld=0 THEN Sfeld
  507.         Such:
  508.           LOCATE 3,25:LINE INPUT Such$
  509.         IF Such$="" THEN Such
  510.         CaseSensitive:
  511.           LOCATE 4,26:LINE INPUT Gk$:Gk$=UCASE$(LEFT$(Gk$,1))
  512.         IF Gk$<>"J" AND Gk$<>"N" THEN CaseSensitive
  513.         WoSuchen:
  514.           LOCATE 6,14:LINE INPUT WoS$:WoS$=UCASE$(LEFT$(WoS$,1))
  515.         IF WoS$<>"V" AND WoS$<>"R" AND WoS$<>"G" AND WoS$<>"Q" THEN WoSuchen
  516.         IF Gk$="N" THEN
  517.           Gk=1
  518.           Such$=UCASE$(Such$)
  519.         ELSE
  520.           Gk=0
  521.         END IF
  522.         IF WoS$<>"Q" THEN
  523.           IF WoS$="V" THEN
  524.             Start=Satz:Ende=Msatz
  525.           ELSEIF WoS$="R" THEN
  526.             Start=1:Ende=Satz
  527.           ELSEIF WoS$="G" THEN
  528.             Start=1:Ende=Msatz
  529.           END IF
  530.           CLS
  531.           LOCATE 2,1
  532.           PRINT "Duchsuchter Bereich:"
  533.           PRINT "  Start : ";Start
  534.           PRINT "  Ende  : ";Ende
  535.           FOR i=Start TO Ende
  536.             LOCATE 5,1
  537.             PRINT "  Jetzt : ";i
  538.             GET #1,i
  539.             IF Gk THEN
  540.               Hier$=UCASE$(In$(Sfeld))
  541.             END IF
  542.             IF INSTR(Hier$,Such$) THEN
  543.               CLS:PRINT "Suchbegriff gefunden in Datensatz # ";i
  544.               GOSUB Unterbrechung
  545.               PRINT "Feldinhalt :"
  546.               PRINT In$(Sfeld)
  547.               WeiterSuchen:
  548.                 LOCATE 4,3:LINE INPUT "Weitersuchen (J/N) ";Ws$
  549.                 Ws$=UCASE$(LEFT$(Ws$,1))
  550.               IF Ws$<>"J" AND Ws$<>"N" THEN WeiterSuchen
  551.               IF Ws$="N" THEN
  552.                 Gefunden=i:Satz=i:i=Ende+1
  553.               ELSE
  554.                 Gefunden=i
  555.                 CLS
  556.                 LOCATE 2,1
  557.                 PRINT "Duchsuchter Bereich:"
  558.                 PRINT "  Start : ";Start
  559.                 PRINT "  Ende  : ";Ende
  560.               END IF
  561.             END IF
  562.           NEXT i
  563.           Satz=Gefunden
  564.           IF Satz<1 THEN Satz=1
  565.           IF Satz>Msatz THEN Satz=Msatz
  566.         END IF
  567.         WINDOW CLOSE 9
  568.         CALL SetWindowTitles(WINDOW(7),SADD(w.t$),-1)
  569.       END IF
  570.       IF Co$="+" THEN
  571.         IF Satz<Msatz THEN
  572.           Satz=Satz+1
  573.         ELSE
  574.           BEEP
  575.         END IF
  576.       END IF
  577.       IF Co$="-" THEN
  578.         IF Satz>1 THEN
  579.           Satz=Satz-1
  580.         ELSE
  581.           BEEP
  582.         END IF
  583.       END IF
  584.       IF Co$=CHR$(31) THEN
  585.         Satz=Satz-10
  586.         IF Satz<=0 THEN
  587.           BEEP
  588.           Satz=1
  589.         END IF
  590.       END IF
  591.       IF Co$=CHR$(30) THEN
  592.         Satz=Satz+10
  593.         IF Satz>Msatz THEN
  594.           BEEP
  595.           Satz=Msatz
  596.         END IF
  597.       END IF
  598.       IF Co$="G" THEN
  599.         LOCATE 22,1
  600.         INPUT "Wohin (* - letzter Satz) ";N$
  601.         IF N$="*" THEN
  602.           Satz=Msatz
  603.         ELSE
  604.           Satz=ABS(INT(VAL(N$)))
  605.           IF Satz=0 THEN
  606.             Satz=1
  607.             BEEP
  608.           END IF
  609.           IF Satz>Msatz THEN
  610.             Satz=Msatz
  611.             BEEP
  612.           END IF
  613.         END IF
  614.       END IF
  615.       IF Co$="D" THEN
  616.         FOR i=1 TO 11
  617.           LSET In$(i)=""
  618.         NEXT i
  619.         PUT #1,Satz
  620.       END IF
  621.       IF Co$="P" THEN
  622.         IF Drucker=1 THEN
  623.           FOR i=1 TO Anzmsk
  624.             LPRINT Bezeichnung$(i);"  :  ";In$(i)
  625.           NEXT i
  626.           LPRINT
  627.           LPRINT
  628.         END IF
  629.       END IF
  630.       IF Co$="E" THEN
  631.         FOR i=1 TO 11
  632.           Ein$(i)=In$(i)
  633.         NEXT i
  634.         GOSUB Eing
  635.         FOR i=1 TO 11
  636.           LSET In$(i)=Ein$(i)
  637.         NEXT i
  638.         PUT #1,Satz
  639.       END IF
  640.     WEND
  641.     Co$=""
  642.   CLOSE #1   
  643.   GOSUB FadeOut
  644.   WINDOW CLOSE 5
  645.   GOSUB FensterWieVorher
  646. RETURN
  647.  
  648. Loeschen:
  649.   CALL REQUEST("Programm wirklich","neu starten ?"," Ja "," Nein ",req%)
  650.   IF req%<>0 THEN
  651.     RUN
  652.   END IF
  653.   WINDOW OUTPUT 2
  654. RETURN
  655.  
  656. Ende:
  657.   CALL REQUEST("WOLLEN SIE DAS PROGRAMM","WIRKLICH BEENDEN ?"," Ja "," Nein ",req%)
  658.   IF req%<>0 THEN
  659.     WINDOW CLOSE 2
  660.     SCREEN CLOSE 1
  661.     MENU RESET
  662.     LIBRARY CLOSE
  663.     END  'SYSTEM
  664.   END IF
  665.   WINDOW OUTPUT 2
  666. RETURN
  667.  
  668. DruckeAlles:
  669.   w.t$="MaxiDAT.    Alles ausdrucken"+CHR$(0)
  670.   GOSUB FensterNeuRichten
  671.   LINE (0,0)-(640,255),0,bf:CLS
  672.   LINE INPUT "Filename -> ";DNam$
  673.   IF DNam$="" THEN
  674.     GOSUB FensterWieVorher:RETURN
  675.   END IF
  676.   Datnam$=Drive$+Pfad$+DNam$+".DATEN"
  677.   Datinfnam$=Drive$+Pfad$+DNam$+".INFOS"
  678.   GOSUB LeseInfos
  679.   LPRINT "Filename             : ";DNam$
  680.   LPRINT "Anzahl von Einträgen :";Satznummer-1
  681.   LPRINT "Druckdatum           : ";
  682.   Datum DTM$
  683.   LPRINT DTM$
  684.   LPRINT "Zeit                 : ";TIME$
  685.   LPRINT
  686.   LPRINT
  687.   CLS       
  688.   OPEN "r",#1,Datnam$,550
  689.     FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11)
  690.     PRINT "Daten drucken . . ."
  691.     PRINT "Ich drucke momentan #"
  692.     FOR i=1 TO Satznummer-1
  693.       LOCATE 5,5
  694.       PRINT i
  695.       GET #1,i
  696.       FOR Ii=1 TO Anzmsk
  697.         LPRINT Bezeichnung$(Ii);" : ";
  698.         LPRINT In$(Ii)
  699.       NEXT Ii
  700.       LPRINT 
  701.     NEXT i
  702.   CLOSE #1
  703.   LPRINT
  704.   LPRINT
  705.   LPRINT "--- Ende des Files ---"
  706.   LPRINT
  707.   LPRINT
  708.   LPRINT
  709.   GOSUB FensterWieVorher
  710. RETURN
  711.  
  712. DruckeAllesOHNE:
  713.   w.t$="MaxiDAT.    Alle Daten ohne 'Kopf' ausdrucken"+CHR$(0)
  714.   GOSUB FensterNeuRichten
  715.   LINE (0,0)-(640,255),0,bf:CLS
  716.   LINE INPUT "Filename -> ";DNam$
  717.   IF DNam$="" THEN
  718.     GOSUB FensterWieVorher
  719.     RETURN
  720.   END IF
  721.   Datnam$=Drive$+Pfad$+DNam$+".DATEN"
  722.   Datinfnam$=Drive$+Pfad$+DNam$+".INFOS"
  723.   GOSUB LeseInfos
  724.   OPEN "r",#1,Datnam$,550
  725.     FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11)
  726.     PRINT "Daten drucken  . . ."
  727.     PRINT "Ich drucke momentan #"
  728.     FOR i=1 TO Satznummer-1
  729.       LOCATE 5,5
  730.       PRINT i
  731.       GET #1,i
  732.       FOR Ii=1 TO Anzmsk
  733.         LPRINT In$(Ii)
  734.       NEXT Ii
  735.       LPRINT 
  736.     NEXT i
  737.   CLOSE #1
  738.   LPRINT
  739.   LPRINT
  740.   GOSUB FensterWieVorher
  741. RETURN
  742.  
  743. DruckeAuswahl:
  744.   w.t$="MaxiDAT.    Bestimmte Daten drucken"+CHR$(0)
  745.   GOSUB FensterNeuRichten
  746.   LINE (0,0)-(640,255),0,bf:CLS
  747.   LINE INPUT "Filename -> ";DNam$
  748.   IF DNam$="" THEN
  749.     GOSUB FensterWieVorher:RETURN
  750.   END IF
  751.   INPUT "Welchen Datensatz (Nr. eingeben) ";Satz
  752.   Datnam$=Drive$+Pfad$+DNam$+".DATEN"
  753.   Datinfnam$=Drive$+Pfad$+DNam$+".INFOS"
  754.   GOSUB LeseInfos
  755.   LPRINT "Filename       :";Datnam$
  756.   LPRINT "Datensatz      #";Satz
  757.   LPRINT
  758.   OPEN "r",#1,Datnam$,550
  759.     FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11)
  760.     GET #1,Satz
  761.     FOR i=1 TO Anzmsk
  762.       LPRINT Bezeichnung$(i);"  :  ";
  763.       LPRINT In$(i)
  764.     NEXT i
  765.   CLOSE #1
  766.   LPRINT
  767.   LPRINT
  768.   GOSUB FensterWieVorher
  769. RETURN
  770.  
  771. ChangeDir:
  772.   WINDOW 5,"Neuen Pfad eingeben : ",(1,20)-(400,30),16,1
  773.   LINE INPUT Pfad$
  774.   WINDOW CLOSE 5
  775.   WINDOW OUTPUT 2
  776.   IF Pfad$<>"" THEN
  777.     l=LEN(Pfad$)
  778.     IF MID$(Pfad$,l,1)<>"/" THEN
  779.       Pfad$=Pfad$+"/"
  780.       l=l+1
  781.     END IF
  782.     IF MID$(Pfad$,1,1)=":" THEN
  783.       Pfad$=MID$(Pfad$,2,l-1)
  784.     END IF
  785.     IF MID$(Pfad$,4,1)=":" THEN
  786.       Drive$=MID$(Pfad$,1,4)
  787.       Pfad$=MID$(Pfad$,5,l-4)
  788.     END IF
  789.   ELSE
  790.     Pfad$="MaxiDAT/Daten/"
  791.   END IF
  792. RETURN
  793.  
  794. ChangeDrive:
  795.   CALL REQUEST("Welches Laufwerk","benutzen ??",d1$,d2$,req%)
  796.   IF req%<>0 THEN
  797.     Drive$=d1$
  798.   ELSE
  799.     Drive$=d2$
  800.   END IF
  801.   WINDOW OUTPUT 2
  802. RETURN
  803.  
  804. ZeigeDir:
  805.   wd&=WINDOW(7)
  806.   WINDOW 6,"Inhalt: "+Drive$+Pfad$,,31,1
  807.   w&=WINDOW(7)
  808.   CALL MoveWindow(w&,-PEEKW(w&+4),-PEEKW(w&+6))
  809.   CALL SizeWindow(w&,320-PEEKW(w&+8),255-PEEKW(w&+10))
  810.   CALL MoveWindow(w&,320,0)
  811.   CALL ClearMenuStrip(w&)
  812.   Inhalt$=Drive$+MID$(Pfad$,1,LEN(Pfad$)-1)
  813.   FILES Inhalt$
  814.   WINDOW 2
  815.   CALL ActivateWindow(wd&)
  816.   CALL MoveWindow(wd&,-PEEKW(wd&+4),-PEEKW(wd&+6))
  817.   CALL SizeWindow(wd&,320-PEEKW(wd&+8),255-PEEKW(wd&+10))
  818. RETURN
  819.  
  820. DeleteFile:
  821.   w.t$="MaxiDAT.    Datei löschen (VORSICHT!!)"+CHR$(0)
  822.   GOSUB FensterNeuRichten
  823.   LINE (0,0)-(640,255),0,bf:CLS
  824.   LINE INPUT "Filename ? ";DNam$
  825.   IF DNam$<>"" THEN
  826.     DNam$=Drive$+Pfad$+DNam$
  827.     CALL REQUEST("Diese Datei wirklich","L Ö S C H E N ?","  Ja  "," NEIN !! ",req%)
  828.     IF req%<>0 THEN
  829.       KILL DNam$
  830.     END IF
  831.   END IF
  832.   GOSUB FensterWieVorher
  833. RETURN
  834.  
  835. GrafikDateiAnlegen:
  836.   w.t$="MaxiDAT.    Anlegen einer Datei für Grafikdaten"+CHR$(0)
  837.   GOSUB FensterNeuRichten
  838.   GOSUB LoescheVariablen
  839.   LINE (0,0)-(640,255),0,bf:CLS
  840.   PRINT "Grafikdatei anlegen ..."
  841.   LINE INPUT "Dateiname ? ";nam$
  842.   IF nam$="" THEN
  843.     GOSUB FensterWieVorher:RETURN
  844.   END IF
  845.   Datinfnam$=Drive$+Pfad$+nam$+".INFOS"
  846.   OPEN Datinfnam$ FOR OUTPUT AS #2
  847.     WRITE #2,11          
  848.     WRITE #2,2
  849.     WRITE #2,1
  850.     WRITE #2,"Name"
  851.     WRITE #2,5
  852.     WRITE #2,"Value"
  853.     WRITE #2,5
  854.   CLOSE #2
  855.   GOSUB FensterWieVorher
  856. RETURN
  857.   
  858. Zeichnen:
  859.   w.t$="MaxiDAT.    Grafik zeichnen"+CHR$(0)
  860.   GOSUB FensterNeuRichten
  861.   GOSUB LoescheVariablen
  862.   LINE (0,0)-(640,255),0,bf:CLS
  863.   M=0
  864.   PRINT "Grafik zeichnen ... "
  865.   LINE INPUT "Filename ? ";nam$
  866.   IF nam$="" THEN
  867.     GOSUB FensterWieVorher:RETURN
  868.   END IF
  869.   Datnam$=Drive$+Pfad$+nam$+".DATEN"
  870.   Datinfnam$=Drive$+Pfad$+nam$+".INFOS"
  871.   GOSUB LeseInfos
  872.   CLS
  873.   IF schon.benutzt=1 THEN
  874.     ERASE b$
  875.     ERASE Wert
  876.   END IF
  877.   schon.benutzt=1
  878.   CLS 
  879.   DIM b$(Satznummer),Wert(Satznummer)
  880.   OPEN "R",#1,Datnam$,550
  881.     FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11)
  882.     FOR i=1 TO Satznummer-1
  883.       GET #1,i
  884.       b$(i)=In$(1)
  885.       Wert(i)=VAL(In$(2))
  886.     NEXT i
  887.   CLOSE #1
  888.   GesamtWert=0 : MaxWert=0 : Anzahl=0
  889.   FOR i=1 TO Satznummer
  890.     GesamtWert=GesamtWert+Wert(i)
  891.     IF Wert(i) <> 0 THEN
  892.       INC Anzahl
  893.       IF Wert(i) > MaxWert THEN
  894.         MaxWert=Wert(i)
  895.       END IF
  896.     END IF
  897.   NEXT i
  898.   PRINT "Der höchste vorkommende Wert ist y=";MaxWert
  899.   PRINT "Wenn Sie diesen Wert ändern wollen, geben Sie den neuen Wert jetzt ein!"
  900.   LINE INPUT "Größte y-Achsen-Beschriftung (od. RETURN) ?";M$
  901.   IF VAL(M$)>MaxWert THEN
  902.     MaxWert=VAL(M$)
  903.   END IF
  904.   CALL REQUEST("Welche Art Grafik","soll ich zeichnen ?","Balken","Linien",erg%)
  905.   GOSUB FadeOut
  906.   IF erg%=0 THEN  
  907.     GOSUB Linien
  908.   ELSE
  909.     GOSUB Balken
  910.   END IF
  911.   GOSUB FensterWieVorher
  912. RETURN
  913.   
  914. ProgrammInfo:
  915.   w.t$="MaxiDAT.   "+Version$+" -- Programminformationen"+CHR$(0)
  916.   GOSUB FensterNeuRichten
  917.   LINE (0,0)-(640,255),0,bf:CLS
  918.   LOCATE 1,1
  919.   txt$="MaxiDAT - AMIGA"
  920.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  921.   LOCATE 2,1  
  922.   txt$="---------------"
  923.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  924.   LOCATE 4,1
  925.   txt$="Version 2.50    -    Public Domain (Shareware)"
  926.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  927.   LOCATE 9,1
  928.   txt$="Wenn Ihnen dieses Programm gefällt, senden Sie bitte 20,-- an :"
  929.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  930.   LOCATE 13,1
  931.   COLOR 2 
  932.   txt$="        CHRISTOPH HUST"
  933.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  934.   LOCATE 14,1
  935.   txt$="        MAINZER STRASSE 30"
  936.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  937.   LOCATE 15,1
  938.   txt$="        D-5407 BOPPARD 1"
  939.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  940.   LOCATE 17,1
  941.   COLOR 3
  942.   LOCATE 19,1
  943.   txt$="----- BITTE EINE BELIEBIGE TASTE DRÜCKEN -----"
  944.   CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  945.   GOSUB FadeIn
  946.   WHILE INKEY$=""
  947.   WEND
  948.   GOSUB FadeOut
  949.   GOSUB FensterWieVorher
  950. RETURN
  951.  
  952. Eing:
  953.   WHILE Jn$<>"J"
  954.     CLS
  955.     LOCATE 1,1
  956.     txt$="Daten eingeben.                              Satz # "+STR$(Satz)
  957.     CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  958.     FOR i=1 TO Anzmsk
  959.       COLOR 3
  960.       LOCATE i+2,1
  961.       txt$=Bezeichnung$(i)+":"
  962.       CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  963.       COLOR 2
  964.       LOCATE i+2,Maxbezlaenge+4
  965.       txt$=Ein$(i)
  966.       CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  967.     NEXT i
  968.     COLOR 1
  969.     FOR i=1 TO Anzmsk
  970.       LOCATE i+2,Maxbezlaenge+4
  971.       LINE INPUT Eing$
  972.       IF Eing$<>"" THEN
  973.         Ein$(i)=Eing$
  974.       END IF
  975.     NEXT i
  976.     CLS
  977.     LOCATE 1,1
  978.     txt$="Daten eingeben.                              Satz # "+STR$(Satz)
  979.     CALL Text(RastPort&,SADD(txt$),LEN(txt$)) 
  980.     FOR i=1 TO Anzmsk
  981.       COLOR 3
  982.       LOCATE i+2,1
  983.       txt$=Bezeichnung$(i)+":"
  984.       CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  985.       COLOR 2
  986.       LOCATE i+2,Maxbezlaenge+4
  987.       txt$=Ein$(i)
  988.       CALL Text(RastPort&,SADD(txt$),LEN(txt$))
  989.     NEXT i
  990.     COLOR 1
  991.     LOCATE 20,1
  992.     Jn$=""
  993.     INPUT " O.K. [J/N] ";Jn$
  994.     Jn$=LEFT$(UCASE$(Jn$),1)
  995.   WEND  
  996.   Jn$=""    
  997. RETURN
  998.  
  999. LeseInfos:
  1000.   OPEN Datinfnam$ FOR INPUT AS #2
  1001.     INPUT #2,Maxbezlaenge
  1002.     INPUT #2,Anzmsk
  1003.     INPUT #2,Satznummer
  1004.     FOR i=1 TO Anzmsk
  1005.       LINE INPUT #2,Bezeichnung$(i)
  1006.       Bezeichnung$(i)=MID$(Bezeichnung$(i),2,LEN(Bezeichnung$(i))-2)
  1007.       INPUT #2,Laenge(i)
  1008.     NEXT i
  1009.   CLOSE #2
  1010. RETURN
  1011.  
  1012. Datum:
  1013.   MENU OFF
  1014.   DTM$=DATE$
  1015.   MENU ON
  1016. RETURN
  1017.  
  1018. SUB Datum(a$) STATIC
  1019.   MENU OFF
  1020.   a$=DATE$
  1021.   MENU ON
  1022. END SUB
  1023.  
  1024. Fehler:
  1025.   TIMER OFF
  1026.   Fr=ERR
  1027.   WINDOW 2:WINDOW OUTPUT 2:CALL ActivateWindow(WINDOW(7))
  1028.   LINE (0,0)-(640,255),0,bf
  1029.   BEEP
  1030.   PALETTE 0,1,1,1:PALETTE 1,0,0,0:PALETTE 2,1,0,0:PALETTE 3,0,0.5,1
  1031.   CLS
  1032.   IF Fr=64 THEN
  1033.     COLOR 3
  1034.     PRINT "FEHLER: Falscher Dateiname."
  1035.   ELSEIF Fr=57 THEN
  1036.     COLOR 3
  1037.     PRINT "FEHLER beim I/O aufgetreten."
  1038.   ELSEIF Fr=68 THEN
  1039.     COLOR 3
  1040.     PRINT "FEHLER: Gerät nicht ansprechbar."
  1041.   ELSEIF Fr=61 THEN
  1042.     COLOR 3
  1043.     PRINT "FEHLER: Diese Diskette ist voll."
  1044.   ELSEIF Fr=53 THEN
  1045.     COLOR 3
  1046.     PRINT "FEHLER: Datei nicht gefunden."
  1047.   ELSEIF Fr=14 THEN
  1048.     COLOR 3
  1049.     PRINT "FEHLER: Kein Stapelspeicher frei."
  1050.   ELSEIF Fr=7 THEN
  1051.     COLOR 3
  1052.     PRINT "FEHLER: Speichermangel."
  1053.   ELSEIF Fr=70 THEN
  1054.     COLOR 3
  1055.     PRINT "ACHTUNG: Diese Disk ist schreibgeschützt."
  1056.   ELSEIF Fr=49 THEN
  1057.     COLOR 3
  1058.     PRINT "FEHLER: Unbekannte Diskette."
  1059.   ELSE
  1060.     COLOR 3:PRINT "F e h l e r      a u f g e t r e t e n !"
  1061.     COLOR 2:PRINT :PRINT "BASIC-Code :";Fr
  1062.     COLOR 3:PRINT :PRINT "Entschuldigung ... !"
  1063.   END IF
  1064.   PRINT 
  1065.   PRINT "Beliebige Taste drücken !!"
  1066.   WHILE INKEY$="":WEND:COLOR 1
  1067.   WINDOW 2
  1068.   WINDOW OUTPUT 2
  1069.   CLOSE
  1070.   FI=1
  1071. RESUME Hauptprogramm
  1072.  
  1073. LoescheVariablen:
  1074.   FOR i%=1 TO 11
  1075.     Laenge(i%)=0
  1076.     Bezeichnung$(i%)=""
  1077.     Ein$(i%)=""
  1078.   NEXT i%
  1079. RETURN
  1080.  
  1081. MenueVervollstaendigen:
  1082.   MenuStrip&=PEEKL(WINDOW(7)+28)
  1083.   FirstItem&=PEEKL(MenuStrip&+18)
  1084.       POKEW FirstItem&+12,PEEKW(FirstItem&+12) OR 4
  1085.       POKE FirstItem&+26,ASC("a")
  1086.     NextItem&=PEEKL(FirstItem&)
  1087.       POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4
  1088.       POKE NextItem&+26,ASC("e")
  1089.     NextItem&=PEEKL(NextItem&)
  1090.       POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4
  1091.       POKE NextItem&+26,ASC("b")
  1092.     NextItem&=PEEKL(NextItem&)
  1093.       POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4
  1094.       POKE NextItem&+26,ASC("n")
  1095.     NextItem&=PEEKL(PEEKL(NextItem&))
  1096.       POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4
  1097.       POKE NextItem&+26,ASC("q")
  1098.   FirstItem&=PEEKL(PEEKL(MenuStrip&)+18)
  1099.       POKEW FirstItem&+12,PEEKW(FirstItem&+12) OR 4
  1100.       POKE FirstItem&+26,ASC("m")
  1101.     NextItem&=PEEKL(FirstItem&)
  1102.       POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4
  1103.       POKE NextItem&+26,ASC("o")
  1104.     NextItem&=PEEKL(NextItem&)
  1105.       POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4
  1106.       POKE NextItem&+26,ASC("b")
  1107.   FirstItem&=PEEKL(PEEKL(PEEKL(MenuStrip&))+18)
  1108.       POKEW FirstItem&+12,PEEKW(FirstItem&+12) OR 4
  1109.       POKE FirstItem&+26,ASC("u")
  1110.     NextItem&=PEEKL(FirstItem&)
  1111.       POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4
  1112.       POKE NextItem&+26,ASC("l")
  1113.     NextItem&=PEEKL(NextItem&)
  1114.       POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4
  1115.       POKE NextItem&+26,ASC("d")
  1116.     NextItem&=PEEKL(NextItem&)
  1117.       POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4
  1118.       POKE NextItem&+26,ASC("k")  
  1119.   FirstItem&=PEEKL(PEEKL(PEEKL(PEEKL(MenuStrip&)))+18)
  1120.       POKEW FirstItem&+12,PEEKW(FirstItem&+12) OR 4
  1121.       POKE FirstItem&+26,ASC("g")
  1122.     NextItem&=PEEKL(FirstItem&)
  1123.       POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4
  1124.       POKE NextItem&+26,ASC("z")
  1125.   FirstItem&=PEEKL(PEEKL(PEEKL(PEEKL(PEEKL(MenuStrip&))))+18)
  1126.       POKEW FirstItem&+12,PEEKW(FirstItem&+12) OR 4
  1127.       POKE FirstItem&+26,ASC("p")
  1128.   FirstItem&=PEEKL(PEEKL(PEEKL(PEEKL(PEEKL(PEEKL(MenuStrip&)))))+18)
  1129.       POKEW FirstItem&+12,PEEKW(FirstItem&+12) OR 4
  1130.       POKE FirstItem&+26,ASC("w")
  1131. RETURN
  1132.  
  1133. Linien:
  1134.   WINDOW 10,"Grafikausgabe  (="+nam$+"=)",,31,1
  1135.   w&=WINDOW(7)
  1136.   CALL MoveWindow(w&,-PEEKW(w&+4),-PEEKW(w&+6))
  1137.   CALL SizeWindow(w&,640-PEEKW(w&+8),255-PEEKW(w&+10))
  1138.   CALL ClearMenuStrip(w&)
  1139.   LINE (0,0)-(640,255),0,bf:CLS
  1140.   COLOR 1
  1141.   FaktorX = 540/Anzahl
  1142.   Faktor  = 205/MaxWert
  1143.   i=0:x=0:y=0:x2=0:y2=0
  1144.   FOR Ii=1 TO Anzahl
  1145.     Check2: INC i
  1146.     IF Wert(i) = 0 THEN Check2
  1147.     x=20+(FaktorX*Ii)
  1148.     y=220-(Wert(i)*Faktor)
  1149.     IF x2=0 AND y2=0 THEN
  1150.       x2=x
  1151.       y2=y
  1152.     END IF
  1153.     LINE (x2,y2)-(x,y)
  1154.     LOCATE 29, INT (x/8)
  1155.     PRINT LEFT$(b$(i),4);
  1156.     x2=x
  1157.     y2=y
  1158.   NEXT Ii
  1159.   LOCATE 1+INT(10/8),1
  1160.   PRINT USING "#####.#";MaxWert
  1161.   LOCATE 2+INT(110/8),1
  1162.   PRINT USING "#####.#";MaxWert/2
  1163.   LOCATE 1+INT(215/8),1
  1164.   PRINT USING "#####.#";0
  1165.   COLOR 3
  1166.   PATTERN 52428
  1167.   LINE (60,15)-(630,15)
  1168.   LINE (60,118)-(630,118)
  1169.   LINE (60,215)-(630,215)
  1170.   PATTERN 65535
  1171.   COLOR 1
  1172.   w&=WINDOW(7)
  1173.   WINDOW 2:CALL ActivateWindow(WINDOW(7))
  1174.   CALL WindowToFront(w&)
  1175. RETURN
  1176.   
  1177. Balken:
  1178.   WINDOW CLOSE 11
  1179.   WINDOW 11,"Grafikausgabe (="+nam$+"=) ",,31,1
  1180.   w&=WINDOW(7)
  1181.   CALL MoveWindow(w&,-PEEKW(w&+4),-PEEKW(w&+6))
  1182.   CALL SizeWindow(w&,640-PEEKW(w&+8),255-PEEKW(w&+10))
  1183.   CALL ClearMenuStrip(w&)
  1184.   LINE (0,0)-(640,255),0,bf:CLS               
  1185.   COLOR 1
  1186.   IF MaxWert <> 0 THEN
  1187.     BalkenBreite = INT(560/Anzahl)
  1188.     StreckFaktor=210/MaxWert
  1189.     i=0
  1190.     Farbe=1
  1191.     FOR x=1 TO Anzahl
  1192.       Check: INC i
  1193.       IF Wert(i) = 0 THEN Check
  1194.       LINE(70 +((x-1)*BalkenBreite),215-Wert(i)*StreckFaktor)-(70+(x*BalkenBreite),215),Farbe,bf
  1195.       LOCATE 29,3+INT(((70+((x-1)*BalkenBreite)+0.5*BalkenBreite)/8)-0.5*LEN(b$(i)))
  1196.       COLOR Farbe
  1197.       PRINT b$(i);
  1198.       INC Farbe
  1199.       IF Farbe=4 THEN Farbe=1
  1200.     NEXT x
  1201.     PATTERN 52428
  1202.     COLOR 2
  1203.     LINE (50,5)-(630,5)
  1204.     LINE (50,215)-(630,215)
  1205.     LINE (50,110)-(630,110)
  1206.     PATTERN 65535
  1207.     COLOR 1
  1208.     LOCATE 10/8,1
  1209.     PRINT USING "####.#";MaxWert
  1210.     LOCATE 110/8,1
  1211.     PRINT USING "####.#";MaxWert/2
  1212.     LOCATE 215/8,1
  1213.     PRINT USING "####.#";0
  1214.   END IF
  1215.   w&=WINDOW(7)
  1216.   WINDOW 2:CALL ActivateWindow(WINDOW(7))
  1217.   CALL WindowToFront(w&)
  1218. RETURN
  1219.  
  1220. SUB REQUEST(z2$,z1$,ja$,nein$,e%) STATIC
  1221.   SHARED Version$
  1222.   z1$=z1$+CHR$(0):z2$=z2$+CHR$(0)
  1223.   ja$=ja$+CHR$(0):nein$=nein$+CHR$(0)
  1224.   CALL ITXT(z2&,10,10,z2$,0,adr1&)
  1225.   CALL ITXT(z1&,10,20,z1$,z2&,adr2&)
  1226.   CALL ITXT(ja&,5,3,ja$,0,adr3&)
  1227.   CALL ITXT(nein&,5,3,nein$,0,adr4&)
  1228.   r$="Program Request"+CHR$(0)
  1229.   CALL SetWindowTitles(WINDOW(7),SADD(r$),-1)
  1230.   e%=AutoRequest%(WINDOW(7),z1&,ja&,nein&,0,0,300,80)
  1231.   r$="MaxiDAT "+Version$+CHR$(0)
  1232.   CALL SetWindowTitles(WINDOW(7),SADD(r$),-1)
  1233.   CALL FreeMem(adr1&,LEN(z2$))
  1234.   CALL FreeMem(adr2&,LEN(z1$))
  1235.   CALL FreeMem(adr3&,LEN(ja$))
  1236.   CALL FreeMem(adr4&,LEN(nein$))
  1237.   CALL FreeMem(z1&,20)
  1238.   CALL FreeMem(z2&,20)
  1239.   CALL FreeMem(ja&,20)
  1240.   CALL FreeMem(nein&,20)
  1241. END SUB
  1242.  
  1243. SUB ITXT(adr&,l%,o%,txt$,N&,tadr&) STATIC
  1244.   tadr&=AllocMem&(LEN(txt$),65540)
  1245.   FOR i=1 TO LEN(txt$)
  1246.     POKE tadr&+i-1,ASC(MID$(txt$,i,1))
  1247.   NEXT i
  1248.   adr&=AllocMem&(20,65540)
  1249.   POKE adr&,2
  1250.   POKE adr&+2,0
  1251.   POKE adr&+4,2
  1252.   POKEW adr&+4,l%
  1253.   POKEW adr&+6,o%
  1254.   POKEL adr&+12,tadr&
  1255.   POKEL adr&+16,N&
  1256. END SUB
  1257.  
  1258. FadeOut:
  1259.   FOR i=0 TO 1
  1260.     r=c(i,0):g=c(i,1):b=c(i,2)
  1261.     FOR c=1 TO 0 STEP -0.03    
  1262.       IF c<=r THEN
  1263.         rr=c
  1264.       ELSE
  1265.         rr=r
  1266.       END IF
  1267.       IF c<=g THEN
  1268.         gg=c
  1269.       ELSE
  1270.         gg=g
  1271.       END IF
  1272.       IF c<=b THEN
  1273.         bb=c
  1274.       ELSE
  1275.         bb=b
  1276.       END IF
  1277.       PALETTE i,rr,gg,bb
  1278.     NEXT c
  1279.   NEXT i
  1280.   PALETTE 3,0,0,0:PALETTE 2,0,0,0
  1281. RETURN
  1282.  
  1283. FadeIn:
  1284.   FOR i=0 TO 3
  1285.     r=c(i,0):g=c(i,1):b=c(i,2)
  1286.     ff=1
  1287.     c=0
  1288.     WHILE ff>0
  1289.       IF c>r THEN
  1290.         rr=r
  1291.       ELSE
  1292.         rr=c
  1293.       END IF
  1294.       IF c>g THEN
  1295.         gg=g
  1296.       ELSE
  1297.         gg=c
  1298.       END IF
  1299.       IF c>b THEN
  1300.         bb=b
  1301.       ELSE
  1302.         bb=c
  1303.       END IF
  1304.       PALETTE i,rr,gg,bb
  1305.       IF c>r AND c>g AND c>b THEN ff=-1
  1306.       c=c+0.05
  1307.     WEND
  1308.   NEXT i
  1309. RETURN
  1310.  
  1311. FensterNeuRichten:
  1312.   CALL SetWindowTitles(WINDOW(7),SADD(w.t$),-1)
  1313.   w.o%=PEEKW(WINDOW(7)+4):w.l%=PEEKW(WINDOW(7)+6)
  1314.   w.b%=PEEKW(WINDOW(7)+8):w.h%=PEEKW(WINDOW(7)+10)
  1315.   CALL MoveWindow(WINDOW(7),-w.o%,-w.l%)
  1316.   CALL SizeWindow(WINDOW(7),640-w.b%,255-w.h%)
  1317. RETURN
  1318.  
  1319. FensterWieVorher:
  1320.   CALL SizeWindow(WINDOW(7),-(640-w.b%),-(255-w.h%))
  1321.   CALL MoveWindow(WINDOW(7),w.o%,w.l%)
  1322. RETURN
  1323.  
  1324. Aufraeumen:
  1325.   WINDOW CLOSE 5
  1326.   WINDOW CLOSE 6
  1327.   WINDOW CLOSE 10
  1328.   WINDOW CLOSE 11
  1329.   WINDOW 2
  1330.   CALL ActivateWindow(WINDOW(7))
  1331.   CALL MoveWindow(WINDOW(7),-PEEKW(WINDOW(7)+4),-PEEKW(WINDOW(7)+6))
  1332.   CALL SizeWindow(WINDOW(7),640-PEEKW(WINDOW(7)+8),255-PEEKW(WINDOW(7)+10))
  1333.   LINE (0,0)-(640,255),0,bf:CLS
  1334. RETURN
  1335.  
  1336. Unterbrechung: SOUND 800,5:RETURN
  1337.  
  1338. SUB INC(a) STATIC
  1339.   a=a+1
  1340. END SUB
  1341.  
  1342. SUB DEC(a) STATIC
  1343.   a=a-1
  1344. END SUB
  1345.  
  1346.